package top.ajunnihao.core.service;

import top.ajunnihao.core.entity.Message;
import top.ajunnihao.core.util.page.PageInfo;
import top.ajunnihao.core.util.resp.BaseResp;

import java.util.List;

/**
 * TODO 帖子业务层接口
 *
 * @author AJun
 * @version 1.0.0
 * @date 2020/5/24
 */
public interface MessageService {

    /**
     * 分页查询帖子信息
     *
     * @param pageNum  当前页码
     * @param pageSize 每页数量
     * @return 帖子列表
     */
    PageInfo<Message> findMessageByPage(Integer pageNum, Integer pageSize);

    /**
     * 分页查询回复信息
     *
     * @param msgId    主贴 id
     * @param pageNum  当前页码
     * @param pageSize 每页数量
     * @return 帖子列表
     */
    PageInfo<Message> findMessageReplyByPage(Long msgId, Integer pageNum, Integer pageSize);

    /**
     * 查询精华帖
     *
     * @return 帖子列表
     */
    List<Message> findNiceMsg();

    /**
     * 查询最新四条帖子
     *
     * @return 帖子列表
     */
    List<Message> findNewMsg();

    /**
     * 根据主贴 id 查询帖子信息，附加 User 信息
     *
     * @param msgId 主贴 id
     * @return 单个帖子信息
     */
    Message findMessageById(Long msgId);

    /**
     * 保存帖子信息
     *
     * @param message 帖子信息
     * @return 是否成功
     */
    boolean saveMessage(Message message);

    /**
     * 修改帖子信息
     *
     * @param message 帖子信息
     * @return 是否成功
     */
    boolean updateMessage(Message message);

    /**
     * 设置帖子标志位
     *
     * @param cmd 操作命令
     * @return 响应信息
     */
    BaseResp setMsgFlags(String cmd, Long msgId);

}
